110 DIM NCURS(38),SHARP(38),FLAT(38),STAFF(1884),NOTE1(38),NOTE2(38),NOTE4(38),NOTE8(38),NOTE16(38),NOTE32(38),NOTE64(38),BLOCK(31,2),M$(MAX),IB$(99),PCL(104),PCC(104),PCR(104)
120 DIM REST1(38),REST2(38),REST4(38),REST8(38),REST16(38),REST32(38),REST64(38),PIANOL(104),PIANOR(104),PIANOC(104),DOT(38),NDY(35),BK(5):DEF FNU$(A$)=CHR$(ASC(A$+CHR$(13))+32*(LEFT$(A$,1)>"Z"))
12000 PREVN$=MID$(PTN$,PREVPTR,2):PREVAC$=RIGHT$(PREVN$,1):PREVOC=((PREVPTR-1)/2-INSTR(PSCALE$,LEFT$(PREVN$,1)))/12+1:PREVNN=7*PREVOC+INSTR(SCALE$,LEFT$(PREVN$,1))-7:N2$=N$:IF AC$="-" THEN MID$(N2$,2,1)="b"
12010 LOCATE 2,2:IF NPOS<NCOUNT THEN IF INSERTING THEN PRINT "Inserting ..." ELSE PRINT "Editing ... " ELSE PRINT SPC(13)
12020 IF MID$(M$(NPOS),10,1)="P" OR NOT NOTE THEN N2$="RST"
12030 IF NPOS=NCOUNT AND TEMPO<32 THEN TEMPO=100
12040 FOR X=BCOUNT TO 1 STEP -1:IF NPOS=>BLOCK(X,1) AND NPOS<=BLOCK(X,2) THEN LOCATE 19,2:PRINT SPC(13):LOCATE 19,2:PRINT "#";FNS$(STR$(X));" [";FNS$(STR$(BLOCK(X,1)));":";FNS$(STR$(BLOCK(X,2)));"]":X=0
12045 NEXT X:IF X<>-1 THEN LOCATE 19,2:PRINT SPC(13)
12050 LOCATE 2,31:IF DOTTED OR LEFT$(N2$,1)="R" THEN PRINT USING "Tone \ \";N2$+"." ELSE PRINT USING "Tone \\";N2$
12060 LOCATE 5,31:PRINT USING "Octave #";OC:LOCATE 3,31:PRINT USING "Note ###";NPOS:LOCATE 4,31:IF TEMPO>31 THEN PRINT USING "Tempo ###";TEMPO ELSE PRINT USING "REPEAT ##";TEMPO
12070 LOCATE 7,31:PRINT USING "Blocks ##";BCOUNT:LOCATE 6,31:PRINT USING "Length ##";TIME
12100 OLDTX=FNL2!(PREVTIME)*15+RX:IF PREVNOTE AND PREVDOT THEN PUT (OLDTX,NY),DOT
12110 PUT (OLDTX,RY+20*PREVNOTE),NCURS:TX=RX+15*FNL2!(TIME):PUT (TX,RY+20*NOTE),NCURS:IF NOTE AND DOTTED THEN PUT (TX,RY+20*NOTE),DOT
12160 X=INSTR(SCALE$,LEFT$(PREVN$,1)):XQ=INT(X-X/3+.5):IF PREVAC$<>" " THEN PAINT (KBX+BK(XQ),KBY+5),0,2 ELSE IF X=2 OR X=5 OR X=6 THEN PUT (KBX+15*(X-1),KBY),PCC ELSE IF X=1 OR X=4 THEN PUT (KBX+15*(X-1),KBY),PCL ELSE PUT (KBX+15*(X-1),KBY),PCR
12180 X=INSTR(SCALE$,LEFT$(N$,1)):XQ=INT(X-X/3+.5):IF AC$<>" " THEN PAINT (KBX+BK(XQ),KBY+5),1,2 ELSE IF X=2 OR X=5 OR X=6 THEN PUT (KBX+15*(X-1),KBY),PCC ELSE IF X=1 OR X=4 THEN PUT (KBX+15*(X-1),KBY),PCL ELSE PUT (KBX+15*(X-1),KBY),PCR
12190 KLUGE=TRUE
12210 IF NOT PREVNOTE THEN 12440
12220 ON FNL2!(PREVTIME)+1 GOTO 12230,12240,12250,12260,12270,12280,12290
12230 PUT (NDX,NDY(PREVNN)),NOTE1:GOTO 12300
12240 PUT (NDX,NDY(PREVNN)),NOTE2:GOTO 12300
12250 PUT (NDX,NDY(PREVNN)),NOTE4:GOTO 12300
12260 PUT (NDX,NDY(PREVNN)),NOTE8:GOTO 12300
12270 PUT (NDX,NDY(PREVNN)),NOTE16:GOTO 12300
12280 PUT (NDX,NDY(PREVNN)),NOTE32:GOTO 12300
12290 PUT (NDX,NDY(PREVNN)),NOTE64
12300 IF PREVDOT THEN PUT (NDX,NDY(PREVNN)),DOT
12310 IF PREVAC$="-" THEN PUT (NDX-2,NDY(PREVNN)),FLAT ELSE IF PREVAC$="#" THEN PUT (NDX-2,NDY(PREVNN)),SHARP
12320 IF NOT NOTE THEN 12520 ELSE ON FNL2!(TIME)+1 GOTO 12330,12340,12350,12360,12370,12380,12390
12330 PUT (NDX,NDY(NN)),NOTE1:GOTO 12400
12340 PUT (NDX,NDY(NN)),NOTE2:GOTO 12400
12350 PUT (NDX,NDY(NN)),NOTE4:GOTO 12400
12360 PUT (NDX,NDY(NN)),NOTE8:GOTO 12400
12370 PUT (NDX,NDY(NN)),NOTE16:GOTO 12400
12380 PUT (NDX,NDY(NN)),NOTE32:GOTO 12400
12390 PUT (NDX,NDY(NN)),NOTE64
12400 IF DOTTED THEN PUT (NDX,NDY(NN)),DOT
12410 IF AC$="-" THEN PUT (NDX-2,NDY(NN)),FLAT ELSE IF AC$="#" THEN PUT (NDX-2,NDY(NN)),SHARP
12420 RETURN
12440 IF PREVNOTE THEN 12320 ELSE ON FNL2!(PREVTIME)+1 GOTO 12450,12460,12470,12480,12490,12500,12510
12450 PUT (RDX,RDY),REST1:GOTO 12320
12460 PUT (RDX,RDY),REST2:GOTO 12320
12470 PUT (RDX,RDY),REST4:GOTO 12320
12480 PUT (RDX,RDY),REST8:GOTO 12320
12490 PUT (RDX,RDY),REST16:GOTO 12320
12500 PUT (RDX,RDY),REST32:GOTO 12320
12510 PUT (RDX,RDY),REST64:GOTO 12320
12520 ON FNL2!(TIME)+1 GOTO 12530,12540,12550,12560,12570,12580,12590
14120 FOR X=1 TO 5:LINE (STAFFX+46,STAFFY-X*5)-(STAFFX+60,STAFFY-X*5),2:LINE (STAFFX+46,STAFFY+X*5+45)-(STAFFX+60,STAFFY+X*5+45),2:NEXT X:LINE (STAFFX+46,STAFFY+MIDC)-(STAFFX+60,STAFFY+MIDC),2:PUT (NDX,NDY(NN)),NOTE4
14160 GOSUB 12000:LOCATE 13,21:DEF SEG:POKE 78,1:PRINT"PC Blues Box 2":LOCATE 15,21:POKE 78,2:PRINT "A Music Editor":LOCATE 16,21:PRINT "For The IBM PC"
14162 POKE 78,3:LOCATE 18,20:PRINT "by Fred J. Condo":LOCATE 19,20:PRINT "and Alan J. Zett":ERASE STAFF,PIANOL,PIANOC,PIANOR
14165 PLAY "MBT105O2L16C#FA-B-BB-A-FC#FA-B-BB-A-FF#B-O3C#E-EE-C#O2B-C#FA-B-BB-A-FA-O1A-O2A-GF#O1F#O2F#EC#.O3P8P32.C#":FOR X=19 TO 13 STEP -1:LOCATE X,16:PRINT SPC(24):NEXT
15000 RESTORE:FOR X=1 TO 35:READ NDY(X):NDY(X)=NDY(X)+STAFFY:NEXT
15002 DATA 57,55,52,50,47,45,42,40,37,35,32,30,27,25,17,10,7,5,2,0,-3,-5,-8,-10,-13,-15,-18,-20,-23,-25,-28,-30,-33,-35,-38
15004 FOR X=1 TO 5:READ BK(X):NEXT:RETURN
15006 DATA 15,30,60,75,90,
16000 GOSUB 11000:IF NCOUNT=MAX THEN GOSUB 50000:RETURN ELSE M$="T000O0L00Na ":LZ=-((TEMPO<10)+(TEMPO<100)):MID$(M$,2+LZ)=FNS$(STR$(TEMPO)):MID$(M$,6)=FNS$(STR$(OC)):LZ=-(TIME<10):MID$(M$,8+LZ)=FNS$(STR$(TIME))
16060 IF NOT NOTE THEN MID$(M$,10)="P"+FNS$(STR$(TIME)) ELSE MID$(M$,10)=N$:IF DOTTED THEN MID$(M$,12)="."
16070 IF NOTE AND TEMPO>31 THEN PLAY M$
16080 IF INSERTING THEN IBL=IBL+1:IB$(IBL)=M$:RETURN ELSE M$(NPOS)=M$
16090 NPOS=NPOS+1
16110 IF NPOS>NCOUNT THEN NCOUNT=NCOUNT+1
16120 IF NPOS=NCOUNT THEN IF TEMPO<32 THEN TEMPO=100:RETURN ELSE RETURN
16160 GOTO 27310
16170 FOR X=1 TO 10:KEY X, "":NEXT X:RETURN
17000 :GOSUB 11000:LOCATE 22,16:PRINT "File? ";:AZ=14:GOSUB 24010:F$=AZ$:LOCATE 22,16:PRINT SPC(24):IF F$<"A" THEN RETURN ELSE OPEN F$ FOR INPUT AS #1:INPUT #1,X,X:IF X=0 THEN 17120 ELSE CLOSE #1:OPEN F$ FOR INPUT AS #1
17010 IF NCOUNT>1 THEN LOCATE 22,16:PRINT "Append? (Y/N)";:GOSUB 24000:X$=AZ$:IF X$="Y" THEN 17050
17020 INPUT #1,BCOUNT:INPUT #1,NCOUNT:NPOS=NCOUNT:IF BCOUNT<>0 THEN FOR X=1 TO BCOUNT:INPUT #1,BLOCK(X,1):INPUT #1,BLOCK(X,2):NEXT X
17030 BPOS=BCOUNT:FOR X=1 TO NCOUNT-1:INPUT #1,M$(X):NEXT X:GOTO 17100
17050 INPUT #1,AZ:INPUT #1,ZA:NPOS=NCOUNT+ZA-1:IF BCOUNT+AZ>29 OR NCOUNT+ZA>MAX-1 THEN GOSUB 50000:GOTO 17110 ELSE IF AZ<>0 THEN FOR X=1 TO AZ:INPUT #1,BLOCK(BCOUNT+X,1):INPUT #1,BLOCK(BCOUNT+X,2):NEXT X
17060 FOR X=1 TO AZ:BLOCK(BCOUNT+X,1)=BLOCK(BCOUNT+X,1)+NCOUNT-1:BLOCK(BCOUNT+X,2)=BLOCK(BCOUNT+X,2)+NCOUNT-1:NEXT X:BPOS=BCOUNT+AZ:FOR X=0 TO AZ-2:INPUT #1,M$(NCOUNT+X):NEXT X
17070 FOR X=NCOUNT TO NPOS-1:R=VAL(MID$(M$(X),2,3)):IF R<32 THEN R=R+BCOUNT
17080 MID$(M$(X),2,3)=RIGHT$("00"+FNS$(STR$(R)),3):NEXT X
17120 LOCATE 22,16:BEEP:PRINT "NOT A MUSIC FILE":FOR X=1 TO 1000:NEXT X:GOTO 17110
18000 IF NCOUNT<2 THEN GOSUB 50000:RETURN ELSE GOSUB 11000:LOCATE 22,16:PRINT "File? ";:AZ=14:GOSUB 24010:F$=AZ$:LOCATE 22,16:PRINT SPC(24):IF F$<"A" THEN RETURN ELSE OPEN F$ FOR OUTPUT AS #1
18010 PRINT #1,BCOUNT:PRINT #1,NCOUNT:IF BCOUNT<>0 THEN FOR X=1 TO BCOUNT:PRINT #1,BLOCK(X,1):PRINT #1,BLOCK(X,2):NEXT X
18060 BPOS=BCOUNT:FOR X=1 TO NCOUNT-1:PRINT #1,M$(X):NEXT X:CLOSE #1:NPOS=NCOUNT:TIME=4:DOTTED=FALSE:NOTE=TRUE:PTNPTR=49:RETURN
19000 GOSUB 11000:R=O:IF NCOUNT=1 THEN GOSUB 50000:RETURN ELSE PLAY "MB":LOCATE 22,16:PRINT "Start? ";:AZ=4:GOSUB 24010:X$=AZ$:IF VAL(X$)<1 OR VAL(X$)>NCOUNT-1 THEN X$="1"
19010 LOCATE 22,16:PRINT SPC(24):LOCATE 22,16:PRINT "End? ";:AZ=3:GOSUB 24010:IF VAL(AZ$)<VAL(X$) OR VAL(AZ$)>NCOUNT-1 THEN AZ$=STR$(NCOUNT-1)
19020 LOCATE 22,16:PRINT "Now playing ...":FOR X=VAL(X$) TO VAL(AZ$):IF INKEY$=CHR$(27) THEN 25100
19030 IF VAL(MID$(M$(X),2,3))<32 THEN 19050 ELSE PLAY M$(X)
19040 NEXT:GOTO 25100
19050 R=VAL(MID$(M$(X),2,3)):IF R<1 OR R>BCOUNT THEN 19100
19060 FOR AZ=BLOCK(R,1) TO BLOCK(R,2):IF INKEY$=CHR$(27) THEN 25100
19070 IF VAL(MID$(M$(AZ),2,3))<32 THEN 19100 ELSE PLAY M$(AZ)
20000 GOSUB 11000:LOCATE 22,16:PRINT "Tempo (32-255)? ";:AZ=3:GOSUB 24010:X$=AZ$:IF VAL(X$)<32 OR VAL(X$)>255 THEN 20050 ELSE TEMPO=VAL(X$):LOCATE 22,16:PRINT SPC(24):IF INSERTING THEN RETURN
20010 LOCATE 22,16:PRINT "Global? (Y/N)":GOSUB 24000:X$=AZ$:IF X$<>"Y" THEN 20050 ELSE LOCATE 22,16:PRINT SPC(24):LOCATE 22,16:PRINT "Start? ";:AZ=4:GOSUB 24010:X$=AZ$:IF VAL(X$)<1 OR VAL(X$)>NCOUNT-1 THEN X$="1"
20020 LOCATE 22,16:PRINT SPC(24):LOCATE 22,16:PRINT "End? ";:AZ=4:GOSUB 24010:IF VAL(AZ$)<VAL(X$) OR VAL(AZ$)>NCOUNT-1 THEN AZ$=STR$(NCOUNT-1)
20030 LOCATE 22,16:PRINT SPC(24):LOCATE 22,16:PRINT "Adjusting Tempo ...":FOR X=VAL(X$) TO VAL(AZ$):IF MID$(M$(X),2,3)>"031" THEN MID$(M$(X),2)=RIGHT$("00"+FNS$(STR$(TEMPO)),3)
20040 NEXT X
20050 LOCATE 22,16:PRINT SPC(24):RETURN
21000 GOSUB 11000:IF NCOUNT=1 THEN GOSUB 50000:RETURN ELSE LOCATE 22,16:PRINT "Edit Note? ";:AZ=3:GOSUB 24010:X$=AZ$:LOCATE 22,16:PRINT SPC(24):IF VAL(X$)<1 THEN RETURN ELSE IF VAL(X$)>NCOUNT-1 THEN NPOS=NCOUNT:RETURN
23010 IF X$<>"Y" THEN RETURN ELSE SCREEN 0,0,0:WIDTH 40:COLOR 11,0:CLS:END
24000 AZ$=INKEY$:IF AZ$="" THEN 24000 ELSE IF LEFT$(AZ$,1)=CHR$(0) THEN RETURN ELSE AZ$=FNU$(AZ$):RETURN
24010 AZ$="":ZA$="":PRINT CHR$(95+63*(ZA>10));:IF AZ=0 THEN AZ=255
24020 ZA$=INKEY$:IF ZA$>CHR$(31) AND ZA$<CHR$(123) AND AZ>0 THEN PRINT CHR$(29);ZA$;CHR$(95+63*(ZA>10));:AZ$=AZ$+ZA$:AZ=AZ-1
24030 IF ZA$<>"" AND ZA$<>CHR$(8) THEN SOUND 1100,.1
24040 IF ZA$=CHR$(13) THEN PRINT CHR$(29);" ";:RETURN
24050 IF ZA$=CHR$(8) THEN SOUND 1600,.1:IF LEN(AZ$)>0 THEN PRINT CHR$(29);CHR$(29);CHR$(95+63*(ZA>10));" ";CHR$(29);:AZ=AZ+1:IF LEN(AZ$)>1 THEN AZ$=LEFT$(AZ$,LEN(AZ$)-1) ELSE PRINT CHR$(29);:GOTO 24010
24060 ZA=ZA+4:PRINT CHR$(29);CHR$(95+63*(ZA>10));:IF ZA>20 THEN ZA=0
24070 GOTO 24020
25000 GOSUB 11000:IF NPOS=NCOUNT THEN GOSUB 50000:RETURN ELSE IF INSERTING=0 THEN INSERTING=NPOS:IBL=0:RETURN ELSE IF IBL=0 THEN INSERTING=0:RETURN
25010 LOCATE 22,16:PRINT "Adjusting buffer ...":FOR X=NCOUNT-1 TO INSERTING STEP -1:M$(X+IBL)=M$(X):NEXT X:NCOUNT=NCOUNT+IBL:NPOS=NPOS+IBL:FOR X=0 TO IBL-1:M$(X+INSERTING)=IB$(X+1):NEXT X
25020 IF BCOUNT=0 THEN 25100 ELSE FOR X=1 TO BCOUNT:IF BLOCK(X,1)=>INSERTING THEN BLOCK(X,1)=BLOCK(X,1)+IBL
25030 IF BLOCK(X,2)=>INSERTING THEN BLOCK(X,2)=BLOCK(X,2)+IBL
26010 IF VAL(X$)=0 THEN 25100 ELSE IF NPOS+VAL(X$)=>NCOUNT THEN NCOUNT=NPOS:IF NPOS=1 THEN 22030 ELSE 25100
26020 IF BCOUNT=0 THEN 25100 ELSE AZ=31:BLOCK(AZ,1)=NPOS:BLOCK(AZ,2)=NPOS+VAL(X$)-1:X$="D":GOTO 27715
27000 GOSUB 11000:IF BS OR BCOUNT=30 THEN GOSUB 50000:RETURN ELSE FOR X=1 TO BCOUNT:IF NPOS=BLOCK(X,1) THEN GOSUB 50000:RETURN ELSE NEXT X:BCOUNT=BCOUNT+1:BS=-1:IF BCOUNT=1 THEN BLOCK(1,1)=NPOS:BLOCK(1,2)=0:BPOS=1:RETURN
27010 LOCATE 22,16:PRINT "Adjust Repeats? (Y/N)":GOSUB 24000:X$=AZ$:LOCATE 22,16:PRINT "Adjusting buffer ...";SPC(4):BPOS=0:FOR X=1 TO BCOUNT-1:IF NPOS<BLOCK(X,1) THEN BPOS=X
27020 NEXT X:IF BPOS=0 THEN BLOCK(BCOUNT,1)=NPOS:BLOCK(BCOUNT,2)=0:BPOS=BCOUNT:GOTO 25100
27030 FOR X=BCOUNT-1 TO BPOS STEP -1:BLOCK(X+1,1)=BLOCK(X,1):BLOCK(X+1,2)=BLOCK(X,2):NEXT:BLOCK(BPOS,1)=NPOS:BLOCK(BPOS,2)=0:IF X$="N" THEN 25100
27040 FOR X=1 TO NCOUNT-1:R=VAL(MID$(M$(X),2,3)):IF R<32 AND R=>BPOS THEN R=R+1
27100 GOSUB 11000:IF BCOUNT=0 THEN GOSUB 50000:RETURN ELSE IF BS=0 OR BLOCK(BPOS,1)=>NPOS THEN GOSUB 50000:RETURN ELSE BLOCK(BPOS,2)=NPOS:BS=0:RETURN
27200 GOSUB 11000:IF BCOUNT=0 THEN GOSUB 50000:RETURN
27210 LOCATE 22,16:PRINT "Repeat Block? ";:AZ=2:GOSUB 24010:X$=AZ$:LOCATE 22,16:PRINT SPC(24):IF VAL(X$)<1 OR VAL(X$)>31 THEN RETURN ELSE IF VAL(X$)>BCOUNT THEN GOSUB 50000:RETURN
27220 AZ$="T"+RIGHT$("00"+X$,3)+"O3L04C ";:IF INSERTING THEN IB$(NPOS)=AZ$:IBL=IBL+1 ELSE M$(NPOS)=AZ$
27230 GOTO 16090
27300 IF NPOS>=NCOUNT THEN NPOS=NCOUNT:PTNPTR=49:TIME=4:DOTTED=FALSE:NOTE=TRUE:RETURN
27320 TEMPO=VAL(MID$(M$(NPOS),2,3)):SH7=(RIGHT$(C7$,1)="#"):FL7=(RIGHT$(C7$,1)="-"):IF NOTE THEN PTNPTR=(12*(OC7-1)+INSTR(PSCALE$,N7$)-SH7+FL7)*2-1:RETURN ELSE PTNPTR=49:RETURN
27500 GOSUB 11000:IF BCOUNT=0 THEN GOSUB 50000:RETURN ELSE AZ=0:FOR X=1 TO BCOUNT:IF BLOCK(X,1)<NPOS THEN AZ=X
27510 NEXT X:IF AZ=0 THEN GOSUB 50000:RETURN ELSE NPOS=BLOCK(AZ,1):GOTO 27300
27600 GOSUB 11000:IF BCOUNT=0 THEN GOSUB 50000:RETURN ELSE AZ=0:FOR X=BCOUNT TO 1 STEP -1:IF BLOCK(X,1)>NPOS THEN AZ=X
27610 NEXT X:IF AZ=0 THEN GOSUB 50000:RETURN ELSE NPOS=BLOCK(AZ,1):GOTO 27300
27700 GOSUB 11000:IF BCOUNT=0 THEN GOSUB 50000:RETURN ELSE AZ=0:FOR X=1 TO BCOUNT:IF BLOCK(X,1)=NPOS THEN AZ=X
27710 NEXT X:IF AZ=0 THEN GOSUB 50000:RETURN ELSE LOCATE 22,16:PRINT "Unmark or Delete? (U/D)":GOSUB 24000:X$=AZ$:LOCATE 22,16:PRINT SPC(24):IF X$<>"U" AND X$<>"D" THEN RETURN
27720 LOCATE 22,16:PRINT "Adjusting buffer ...";SPC(4):IF X$="D" THEN FOR X=1 TO NCOUNT-BLOCK(AZ,2)-1:M$(BLOCK(AZ,1)+X-1)=M$(BLOCK(AZ,2)+X):NEXT X:R=BLOCK(AZ,2)-BLOCK(AZ,1)+1:NCOUNT=NCOUNT-R
27730 FOR X=1 TO BCOUNT:IF ((BLOCK(X,1)=>BLOCK(AZ,1) AND BLOCK(X,1)<=BLOCK(AZ,2)) OR (BLOCK(X,2)=>BLOCK(AZ,1) AND BLOCK(X,2)<=BLOCK(AZ,2))) AND X$="D" AND X<>AZ THEN BLOCK(X,1)=-1:BLOCK(X,2)=-1
27740 NEXT X:FOR X=1 TO BCOUNT:IF X$="D" AND BLOCK(X,1)>BLOCK(AZ,1) AND X<>AZ THEN BLOCK(X,1)=BLOCK(X,1)-R:BLOCK(X,2)=BLOCK(X,2)-R
27745 NEXT X:BLOCK(AZ,1)=-1:BLOCK(AZ,2)=-1:AZ=0
27750 AZ=AZ+1:IF AZ>BCOUNT THEN X!=FRE(A$):GOTO 25100 ELSE IF BLOCK(AZ,1)>0 THEN 27750
27760 FOR X=AZ TO BCOUNT:BLOCK(X,1)=BLOCK(X+1,1):BLOCK(X,2)=BLOCK(X+1,2):NEXT X:BCOUNT=BCOUNT-1:IF AZ$="N" THEN AZ=0:GOTO 27750 ELSE FOR X=1 TO NCOUNT-1:R=VAL(MID$(M$(X),2,3))
27770 IF R=AZ THEN M$(X)="X" ELSE IF R<32 AND R>AZ THEN MID$(M$(X),2,3)=RIGHTS("00"+FNS$(STR$(R-1)),3)
27780 NEXT X:FOR X=1 TO NCOUNT-1:IF M$(X)<>"X" THEN 27810 ELSE FOR R=X TO NCOUNT-1:M$(R)=M$(R+1):NEXT R:NCOUNT=NCOUNT-1:FOR R=1 TO BCOUNT:IF AZ=>BLOCK(R,1) AND X<=BLOCK(R,2) THEN BLOCK(R,2)=BLOCK(R,2)-1
27790 NEXT R:FOR R=1 TO BCOUNT:IF BLOCK(R,1)>=BLOCK(R,2) THEN BLOCK(R,1)=-1:BLOCK(R,2)=-1
27800 NEXT R:X=X-1
27810 NEXT X:AZ=0:GOTO 27750
30000 BEEP:X=ERR:LOCATE 22,16:IF X=53 THEN PRINT "FILE NOT FOUND":RESUME 30020 ELSE IF X=57 OR X>64 THEN PRINT "DISK ERROR":RESUME 30020 ELSE IF X=61 THEN PRINT "DISK FULL":RESUME 30020